package leetcode.hot100;

@SuppressWarnings("all")
public class _70_爬楼梯 {

    // 有 n 个阶梯，每次可以爬1阶或2阶楼梯，有多少种爬法
    public int climbStairs(int n) {
        // 特殊情况，如果梯子只有一阶或两阶那么很容易得出答案
        if (n == 1) return 1;
        if (n == 2) return 2;
        // 一般情况，由特殊情况推导
        // i表示有i阶楼梯
        int first = 1;
        int second = 2;
        for (int i = 3; i <= n; i++) {
            // 3阶楼梯的爬法
            second = first + second;
            // 2阶楼梯的爬法
            first = second - first;
        }
        return second;
    }

}
